package it.prova.type;

import it.prova.Consts;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jst.jsf.metadataprocessors.features.IDefaultValue;
import org.eclipse.jst.jsf.metadataprocessors.features.IPossibleValues;
import org.eclipse.jst.jsf.metadataprocessors.features.IValidValues;
import org.eclipse.jst.jsf.metadataprocessors.features.PossibleValue;
import org.eclipse.jst.jsf.metadataprocessors.features.ValidationMessage;
import org.eclipse.jst.jsf.taglibprocessing.attributevalues.EnumerationType;

@SuppressWarnings("unchecked")
public class EntryUnitAttributeValueRuntimeType extends EnumerationType implements IValidValues, IPossibleValues, IDefaultValue
{	
	@Override
	public boolean isValidValue(String value)
	{
		if(value.length() == 0)
		{
			getValidationMessages().add(new ValidationMessage("The 'type' attribute must be a non-zero length String."));
			return false;
		}
		else
		{
			return true;
		}
	}

	@Override
	protected String getReturnType()
	{
		return "it.prova.type.EntryUnitAttributeValueRuntimeType";
	}
	
	public List<PossibleValue> getPossibleValues()
	{
		List<PossibleValue> possibleValues = new ArrayList<PossibleValue>();
		
		PossibleValue field = new PossibleValue(Consts.FIELD_TYPE_FIELD);
		PossibleValue multiSelectionField = new PossibleValue(Consts.FIELD_TYPE_MULTI_SELECTION_FIELD);
		PossibleValue selectionField = new PossibleValue(Consts.FIELD_TYPE_SELECTION_FIELD);
		
		possibleValues.add(field);
		possibleValues.add(multiSelectionField);
		possibleValues.add(selectionField);
		
		return possibleValues;
	}
}